プルスルーキャッシュを設定したリポジトリのイメージを指定すると ECS タスクが起動しないときの対処方法
困っていた内容
ECS のタスク定義で、プルスルーキャッシュを設定した ECR リポジトリのイメージを指定しています。プルスルーキャッシュの動作を期待してリポジトリにはイメージがない状態で、ECS タスクを実行すると、イメージがない旨のエラーが表示されました。
何か設定が足りていないのでしょうか。対処方法を教えてください。
{ "stopCode": "TaskFailedToStart", "stoppedReason": "CannotPullContainerError: inspect image has been retried 1 time(s): failed to resolve ref ..." }
どう対応すればいいの?
タスク実行ロールに設定されたIAMポリシーをご確認ください。
プルスルーキャッシュを使用するには、ECR からイメージを取得する際に必要な権限に加えて、追加のアクセス許可が必要になります。
ecr:BatchImportUpstreamImage
– 外部イメージを取得し、プライベートレジストリにインポートするアクセス許可を付与します。このアクセス許可は、プライベートレジストリアクセス許可ポリシー、ID に基づく IAM ポリシー、またはリソースに基づくリポジトリアクセス許可ポリシーを使用して付与できます。レポジトリアクセス許可の使用に関する詳細については、「プライベートリポジトリポリシー」を参照してください。
ecr:CreateRepository
– プライベートレジストリにリポジトリを作成するアクセス許可を付与します。キャッシュされたイメージを格納するリポジトリがまだ存在しない場合には、この許可が必要となります。
ECS コンソールからタスク実行ロールを自動的に作成した場合に表示されるロールecsTaskExecutionRole
など、上記の権限が付与されていない場合、プルスルーキャッシュの実行がエラーになり、イメージが複製されず、イメージがない旨のエラーが発生します。
そのため、タスク実行ロールに設定された IAM ポリシーを確認し、必要な権限が許可されているか確認してください。